/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


// WARNING! THIS FILE IS AUTO-GENERATED, DO NOT MAKE CHANGES, THEY WILL BE LOST ON NEXT GENERATION!

import { int32, int64, float32 } from "@koalaui/common"
import { KInt, KPointer, KBoolean, KStringPtr, wrapCallback, NativeBuffer } from "@koalaui/interop"
import { NodeAttach, remember } from "@koalaui/runtime"
import { ResourceStr, Font, ResourceColor, Length, Dimension, Offset } from "./ArkUnitsInterfaces"
import { SymbolGlyphModifier, CommonMethod, BlurStyle, ContentModifier, CommonConfiguration } from "./ArkCommonInterfaces"
import { Resource } from "./ArkResourceInterfaces"
import { Callback_Number_String_Void, Callback_Union_Number_Resource_Void, Callback_ResourceStr_Void } from "./SyntheticDeclarations"
import { OptionWidthMode } from "./ArkEnumsInterfaces"
import { ControlSize } from "./ArkButtonInterfaces"
import { DividerOptions } from "./ArkTextPickerInterfaces"
export interface SelectOption {
    value: ResourceStr;
    icon?: ResourceStr;
    symbolIcon?: SymbolGlyphModifier;
}
export type SelectInterface = (options: Array<SelectOption>) => SelectAttribute;
export enum ArrowPosition {
    END = 0,
    START = 1
}
export enum MenuAlignType {
    START = 0,
    CENTER = 1,
    END = 2
}
export interface SelectAttribute extends CommonMethod<SelectAttribute> {
    selected: number | Resource;
    value: ResourceStr;
    font: Font;
    fontColor: ResourceColor;
    selectedOptionBgColor: ResourceColor;
    selectedOptionFont: Font;
    selectedOptionFontColor: ResourceColor;
    optionBgColor: ResourceColor;
    optionFont: Font;
    optionFontColor: ResourceColor;
    onSelect: ((index: number,value: string) => void);
    space: Length;
    arrowPosition: ArrowPosition;
    optionWidth: Dimension | OptionWidthMode;
    optionHeight: Dimension;
    menuBackgroundColor: ResourceColor;
    menuBackgroundBlurStyle: BlurStyle;
    controlSize: ControlSize;
    menuItemContentModifier: ContentModifier<MenuItemConfiguration>;
    divider: DividerOptions | undefined;
}
export interface MenuItemConfiguration extends CommonConfiguration<MenuItemConfiguration> {
    value: ResourceStr;
    icon?: ResourceStr;
    symbolIcon?: SymbolGlyphModifier;
    selected: boolean;
    index: number;
}
